/*
 * @Author: Dagon
 * @Date: 2021-02-24 15:54:37
 * @Description: 多次调用异步函数（三次重试）
 */
  　
 function job () {
    return new Promise((resolve, reject) => {
      setTimeout(function () {
        const num = Math.ceil(Math.random() * 20) // 生成0-20的随机数
        if (num <= 10) {
          console.log('产生连符合要求的随机数', num)
          resolve(num)
        } else {
          reject('产生不符合要求的随机数', num)
        }
      }, 2000)
    })
  }

  async function retry(job, times) {
    for(let i = 0; i < times; i++) {
       try {
         return await job()
       } catch (err) {
         if (i === times - 1) {
           return err
         }
       }
       finally {
         console.log(`还有${times - i - 1}次机会`)
       }
    }
  }

retry(job, 3).then(num => {
  console.log(num)
})